package com.buddy.learn.algorithm.demo;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author Buddy
 * @date 2021/5/6
 */
public class _023刪除字符串中出现次数最少的字符 {
    /**
     * 实现删除字符串中出现次数最少的字符，若多个字符出现次数一样，则都删除。
     * 输出删除这些单词后的字符串，字符串中其它字符保持原来的顺序。
     * 注意每个输入文件有多组输入，即多个字符串用回车隔开
     * 输入：
     *  字符串只包含小写英文字母, 不考虑非法输入，输入的字符串长度小于等于20个字节。
     * 输出：
     *  删除字符串中出现次数最少的字符后的字符串。
     * abcdd aabcddd
     * dd    aaddd
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //存放每个字符以及出现的次数
        int min = Integer.MAX_VALUE;
        Map<Character, Integer> map = new HashMap<>();
        while (sc.hasNextLine()) {
            String str = sc.nextLine();
            if (str.length() > 20) {
                continue;
            }
            for (int i = 0; i < str.length(); i++) {
                if (map.keySet().contains(str.charAt(i))) {
                    map.put(str.charAt(i), map.get(str.charAt(i)) + 1);
                } else {
                    map.put(str.charAt(i), 1);
                }
            }
            for (Integer v : map.values()) {
                min = v < min ? v : min;
            }
            //遍历输入str
            for (int i = 0; i < str.length(); i++) {
                if (map.get(str.charAt(i)) != min) {
                    System.out.print(str.charAt(i));
                }
            }
            map.clear();
            System.out.println("");
        }
    }
}
